Можно поставить юниту моментальный каст заклинания, занулив "анимация обратный ход броска, точка броска"тогда этой рамочки не будет.
Проверил уже с удалением из выбора?
При инициализации создаешь базу, есть функция генерирующее случайное число. Забиваешь базу данных
UT[0] = пехотинец
UT[1] = бугай
UT[2] = лучница
Count = 2 это кол-во макс. типов, нумерация идёт с нуля у меня
CountU = 20 макс. возможное кол-во юнитов. Здесь можете сами указать . а вообще можно отказаться от этой переменной, проставляете сразу в цикл
Теперь как сделать рандом
set RandomCount = от 1 до CountU генерирует случайное кол-во юнитов Цикл A от 1 до RandomCountнадеюсь знаете как работает цикл? А то многие новички неизнают
-set RandomType = от 0 до Count генерируем случайный тип
-создать юнита с типом UT[RandomType] Конец цикла
Вообще можно раскрыть BJ функцию и посмотреть как там генерируют кол-во циклом тему то переименуйте
Nelloy, я непонимаю как ты собрался делать систему сохранений без локальных файлов? Что за бред? Сейвы априори не могут быть одинаковыми у всех игроков, потому что они постоянно меняются!
Неможет у всех игроков быть одинаковый сейв, как ты собрался рассказать что ты прочитал из файла у красного игрока, если у синего нет такого файла, а у синезелёного в файле совершенно другое содержимое, это и есть локальные файлы!
Тебе так и так придется синхронизировать сейв.
Не понимаю в чем проблема? 100500 сейвов работают на preload exploit и прекрасно себя чуствуют, если вам банальный синк который разжеван в 101 месте не по зубам, сразу оставляем в покое мемхак.
Возможно "канал" так же имеет отличную от остальных абилок структуру
Рабочий вариант
function StartAbilityCD takes unit whichUnit, integer abilityId returns boolean
local integer pAbility = 0
local real cd = GetAbilityCD(abilityId, GetPlayerId(GetOwningPlayer(whichUnit))+1)
if whichUnit == null or GetUnitAbilityLevel( whichUnit, abilityId ) < 1 or cd == 0.00 then
return false
endif
set pAbility = GetUnitAbility(whichUnit, abilityId)
if pAbility < 1 then
return false
else
if RMem(pAbility+0x134)==-1 and RMem(pAbility+0x138)==-1 then
call WMem(pAbility+0x134,0)
call WMem(pAbility+0x138,0)
endif
set Memory[pReserverdIntArg1 / 4] = mR2I(cd)
call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
return IsAbilityOnCooldown( pAbility )
endif
return false
endfunction
Armouk, во первых это не вопрос
во вторых - почему тебе должны помогать?
лично я не вижу не 1 причины чтобы делать за тебя карту
или ты бог а все вокруг твои рабы?
если ты и вправду так думаешь то тебе на сайт любителей бдсм
Поскольку его не пугает наличие большого влияния промахов на геймплей - скорее всего он делает рпг. Имхо в рпг всегда клево смотрятся тексттаги полученного урона, для создания которых необходимы триггеры на отлов получения урона. А отлавливаемый урон - можно и прохилить.
Для прохила(и вообще всех манипуляций с задержкой в 0.00 сек) лично я юзаю такие костыли:
Либа здесь только для доп табуляции. Я за чистый жасс + дефайны.
library ZeroTimeEvent
globals
constant integer ZTEArraySize = 64//Even 32 is alot, 64 is too much! Exactly what I need!
timer Zero//Used for 0. sec uses
integer ZTECurrent = 0
unit array ZTEUnits[ZTEArraySize]
integer array ZTEIntegers[ZTEArraySize]
real array ZTEReals[ZTEArraySize]
trigger array ZTETriggers[ZTEArraySize]
endglobals
function ZeroTimeEvent takes nothing returns nothing
loop
set ZTECurrent = ZTECurrent - 1
call TriggerExecute( ZTETriggers[ZTECurrent] )
exitwhen ZTECurrent < 1
endloop
endfunction
#define ZTEAddUnit(u) = {
set ZTEUnits[ZTECurrent] = u
}
#define ZTEAddInteger(i) = {
set ZTEIntegers[ZTECurrent] = i
}
#define ZTEAddReal(r) = {
set ZTEReals[ZTECurrent] = r
}
#define ConfirmZTE(trig) = {
set ZTETriggers[ZTECurrent] = trig
set ZTECurrent = ZTECurrent + 1
call TimerStart( Zero, ZeroTime, false, function ZeroTimeEvent )
}
endlibrary
Absorbentum, Заказ небольших триггерных или джаз систем тоже разрешен в теме заказа заклинаний а вообще-если хотите серьезно сотрудничать создайте свой блог или презентуйте проект чтобы заинтересовать людей.
Alexander69, xgm.guru/p/wc3/optimisations
внимательно прочти то что там написано
особенно про переменные
если коротко то объект не может быть удалён из памяти пока используется (хранится в переменных/хэше/кэше)
Вот как должен выглядеть полностью правильный триггер без утечек, единственная утечка создастся только при первом использовании, это я так понял переменная группы, ее обнулять нельзя, иначе скил будет работать только раз.
создаешь объект, спрашиваешь, какой у него handle
если меньше 0x100000 - беспокоиться не о чем, он локальный и сам разрушится, если не помешаешь ссылками на него (да и то не факт, что это влияет для них). тем паче, что даже в нативке указывается, вечная или нет деформация
этот (terraindeform) - локальный, если что.
о когда я сделал своего героя в нём, то в игре он почему то не используется, в редакторе выставляешь юнита на карту, но при проверке карты, его просто нет.
Ты открыл карту из редактора кампании?
Если нет - поэтому и не отображается.
Порылся в игровых константах (Вкладка "Дополнительно"). Если изменить указанный пункт, можно задать часть получаемого опыта при отрыве уровня героя. Если поставить все числа 100, то всегда будет даваться полный объем опыта. Можно поставить последнее число 50, тогда при большом отрыве уровней, будет даваться только половина опыта. Как-то так. Могу ошибаться
Ну у мастера клинка способность то посложнее...
Вот пример:
Для начала нам нужно создать иллюзии героя, а потом скрыть всех их, так же сделав визуальный эффект (если что то зеленые тени, это снаряды).
Obelick, эта либо не трогает мультибоарды
она по точкам(location) в основном работает Obelick:
учить ради них джас и переписывать мне настолько лень
если ты нормально знаешь гуи и имеешь базовые знания по использованию гугл переводчика то переписать мультибоард на jass много времени не займёт
кроме того тебе не обязательно переписывать полностью
можно сконвертировать в код и поправить то что вызывает утечки
если ты говоришь об утечках в функции установки значения ячейки мультибоарда то их можно убрать следующим кодом
вставь его в шапку карты (туда где ты ALL.j подключал)
правда после этого автозаполнение строк/столбцов перестанет работать и придётся делать его циклом
Будет на несколько сек грузится быстрее, будут меньше просадки фпс при вручении абилок если они неподгружены и так далее.
Вес упадет немного, но упадет.
Есть обычные тени - они выглядят как округлое-размытое пятно
А есть тени зданий - они являются своеобразным рисунком, размер которого не регулируется, как у варианта выше
Есть так же некая "текстура почвы", которая добавляет отрисовку на поверхности земли, стилизованную под постройки или даже под конкретную постройку (как например у ратуши и золотой шахты).
. . .
Под маленькую обсерваторию лучше использовать "тень здания" такую, которая соответствовала бы её размеру - например тень сторожевых башен орков/людей. Если нужно побольше - вариант с гнездом химеры, обелиском, и камнем воскрешения (как те что в кампании Рексара).
Касаемо текстуры земли - можно взять один из стандартных вариантов под здания альянса - каменная плитка на земле. Она есть разных размеров и подобрать что-то подходящее можно.
нет, конвертации напрямую нет. я что-то слышал в прошлом про баг с сохранением fogmodifier в хештаблицу, но деталей не знаю, можешь проверить то направление.
ну и мемхак, на крайняк, офк.
ScopteRectuS, у тебя где то перезаписывается bj_lastCreatedUnit
причём происходит это после первой итерации GroupEnumUnitsInRange
а вообще не стоит юзать стандартные бж переменные
т.к. они могут конфликтовать с другими системами
используй приватные переменные
если после перехода на приватные глобалки проблема останется то скопируй систему на отдельную карту и кинь эту карту сюда
буду тестить разные варианты
ScopteRectuS, ну как я и догадывался, что идет рекурсия.
10 событий - юнит получает урон, на одного юнита... Нужны именно такого типа проверки, всегда в условии триггера проверяй от кого урон и какой этот урон с помощью флага глобалки как в примере.В блоге лича хорошо описаны костыли доты, почитай для общего развития чтобы не наступать на эти грабли еще раз.
Nelloy, будет но для этого данные нужно синхронизировать, для ваших сейв\лоадов есть давно проверенная система, которая не требует мемхака - Data Manager, не надо никакого мемхака. Все понятно и просто, вот неужели нельзя изучить всю мат часть по сейвам прежде чем пороть горячку?
ScopteRectuS, у тебя где то перезаписывается bj_lastCreatedUnit
причём происходит это после первой итерации GroupEnumUnitsInRange
а вообще не стоит юзать стандартные бж переменные
т.к. они могут конфликтовать с другими системами
используй приватные переменные
если после перехода на приватные глобалки проблема останется то скопируй систему на отдельную карту и кинь эту карту сюда
буду тестить разные варианты
ОЖИВИТЬ юнита, который не явзяется ГЕРОЕМ - невозможно, по стредствам триггеров.
Можно лишь создать ещё одного ТОЧНО такого же, без излишеств (бонусы, абилки, айтемы - ничего не сохранится, т.к. это новый юнит).
А вот героев можно
Я вроде бы пробовал воскрешать той же функцией обычных юнитов - ничего не получалось (могу ошибаться).
Через что уничтожаешь? Если через килл, то конечно умирает и нейтральный.
Если наносить от какого-то даммика урон в мильены, то не умрет нейтральный.
Можно от даммика развеяние нежити за 0.01 сек.
Заменять можно, внося значение золота в переменную и потом, создавая новый рудник, ставить количество золота в него из переменной, благо это даже в ГУИ реализовано.
Есть проверка IsUnitDead, где проверяется тип и состояние IsUnitType(u, UNIT_TYPE_DEAD) но никогда не было проблем с проверкой хп.
Так же насколько я помню GetWidgetLife( unit ) > 0.0 или GetUnitState( unit, UNIT_STATE_LIFE ) > 0.405.
Я в свое время делал так:
Первая способность - пассивка, на которую, соответственно, нажать нельзя. Вторая - на основе одной из активок, не сбивающих текущий приказ, с пассивной иконкой и с заданным временем перезарядки. А дальше танцы с бубном и подменой способностей - пока перезарядка не нужна - выдаем пассивку, когда срабатывает эффект - убираем пассивку и выдаем активку, отдаем приказ на ее активацию, по истечении времени перезарядки - забираем активку и возвращаем пассивку, еще полезно отслеживать ситуации когда активка не может быть применена или добиться того чтобы ее можно было применить в любом состоянии кроме смерти.
Собственные попытки в студию, что не получается?
Напомним - ЭТО НЕ СТОЛ ЗАКАЗОВ, здесь задают вопросы про реализацию тех или иных вопросов, спрашивают про ошибки, оптмизацию, отдельные функции. Я не увидел в вашем вопросе ничего кроме невнятного описания механики способности, " вокргу кого то там огненные столбы возникают, и еще порча"...
Filius Dei, во вредные советы подъехали...
Русификатор очень поможет тем кто собрался ломануть чужую карту и сделать её мод, прям ваще жир...
Потом нубам вроде сударя не стоит бежать ломать чужую карту, чето там пытатся копировать - это все бесполезно, недавно был похожий вопрос - помогите взломать карту за вознаграждение, карту сломали - ну а дальше что? Он неспособен ничего сделать потому что просто не понимает как?
Играя в некую карту вы мните себя великими балансерами и картоделами, мол да чё там, шяс подправлю пару значений и все будет норм - нет не будет, это не так просто как может показаться, без понимания устройства карты и знания Jass вам нечего там делать, вы тупо ничего не сможете изменить, да даже скопировать и вставить!
Помните что без труда не выловишь и рыбку из пруда, т.е изи способов в 1 кнопку взять и запилить чужую карту так как вам хочется или вдруг стащить всех героев себе в карту нет, а уж теболее не случится так что вам кто то возьмет и все это сделает вам за спасибо...
Патиссончик, про центр области не заметил
точка каждый раз создаётся заново и это утечка Патиссончик, есть прога на сайте для записи логов
так же есть дебаг через прелоад на сайте
вот счётчик утечек
При конвертации моделей из игр в MDX их вес велик как и вес их текстур ! Я оптимизирую и сжимаю модель через MDLvis а текстуры через BLP Laboratory но их вес все еще внушителен ( Есть ли другие варианты среза веса без дефектов материала ?
Нет. Только удаление лишних анимаций. Остальную оптимизацию веса сделает mdlvis.
При импорте некоторых моделей в карту возникает проблема с их выбором при манипуляции ( Передвижения ) словно их Выбор отсутствует , Думаю некоторые с подобным сталкивались ...
Если модель нельзя выделить в игре курсором, у неё отсутствуют collision shapes (формы коллизии). Их можно добавить в War3ModelEditor -> Окна -> Редактор узлов -> правый клик -> Создать форму - > отредактировать размеры и положение. Их можно добавить несколько, чтобы покрыть модель целиком. Они отвечают за взаимодействие модели с курсором.
Один ресурс - один вопрос, после пойдут замечания.
Лимит операций, обычно это беда настигает заядлых гуишников.
На jass обычно нету таких проблем.
Создайте таймер с периодом .00 сек и запускайте им функции инициализации триггеров.
функция типа InitTrig_Имя триггера - это функция инициализации триггера, она вызывается из функции InitCustomTriggers, но если этих вызовов очень много то функция упирается в лимит операций и поток завершается так и не создав все триггеры.
Много воды разлито. Пиши конкретней. Вообщем если тебе нужна способность, которая будет блочить спеллы юнита. То у повелителя огня есть такая, и вторая есть у Тёмной Охотницы - это Безмолвие. Вообще проще пареной репы.
Кстати на заметку. Безмолвие тёмной охотницы можно сделать так, что бы блокировало не способности а Атаку например, подобие Тумана Ястребов, хотя и туман можно для этого использовать, если кому нужно блочить атаку врага, разрешённые цели сменить у тумана и будет то что нужно.
нужно блочить не все спелы, а конкретные
Вобщем, как я понял, то что я хочу сделать, нельзя сделать, закрываю вопрос
» WarCraft 3 / Настройка Канала
» WarCraft 3 / Замена типа брони
» WarCraft 3 / Двумерные массивы
» WarCraft 3 / нужна помощь с тригерром(тригерами)
» WarCraft 3 / MemHack
» WarCraft 3 / Не показывается перезарядка предмета
» WarCraft 3 / Где заказать?!?
» WarCraft 3 / Утечка или не утечка.
» WarCraft 3 / Камера
» WarCraft 3 / Продажа предметов
» WarCraft 3 / Как делать спеллы в предметах?
» WarCraft 3 / Опыт
» WarCraft 3 / Событие с иллюзией.
» WarCraft 3 / Создание информации.
» WarCraft 3 / Как изменить размер карты.
» WarCraft 3 / constant function
» WarCraft 3 / PreloadAbility( integer )
» WarCraft 3 / Воскрешение декораций
» WarCraft 3 / Проблема с ИИ
» Администрация XGM / Утверждение проекта
» WarCraft 3 / Как сделать пассивку с перезарядкой?
» WarCraft 3 / Триггер
» WarCraft 3 / Как оптимизировать карту?
» WarCraft 3 / Немота